package com.cyh.testdesignpattern.prototype;

import androidx.annotation.NonNull;

/**
 * Object类提供了一个clone()方法，该方法可以将java对象复制一份，但是需要实现clone的java类必须要实现一个接口Cloneable.
 * 该接口表示该类能够复制且具有复制能力。
 *
 *
 * 深拷贝的实现方式1：重写clone方法来实现深拷贝
 * 深拷贝的实现方式2：通过对象序列化实现深拷贝
 * */
public class Sheep implements Cloneable{
    private String name;
    private int age;
    private String color;
    public Sheep friend; //深浅拷贝的问题。

    @NonNull
    @Override
    public Object clone() {
        Sheep sheep = null;
        try {
            sheep = (Sheep)super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return sheep;
    }

    public Sheep(String name, int age, String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public String toString() {
        return "Sheep{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", color='" + color + '\'' +
                '}';
    }
}
